#ifndef TASK_QUEUE_H
#define TASK_QUEUE_H

#include "head.h"

//任务队列节点
typedef struct TaskNode{
    socket_t cli_fd; //客户端套接字
    struct TaskNode *pNext;
}TaskNode_t,*pTaskNode_t;

//任务队列
typedef struct TaskQueue{
    int size; //队列大小
    pTaskNode_t pHead; //队头
    pTaskNode_t pTail; //队尾

    pthread_cond_t cond; //条件变量
    pthread_mutex_t mutex; //互斥锁
    char flag; //线程的退出标志（0不退出，1退出）
}TaskQueue_t,*pTaskQueue_t;

int init_TaskQueue(pTaskQueue_t pQueue); //初始化任务队列
int push_TaskQueue(pTaskQueue_t pQueue,pTaskNode_t pNew); //入队
int get_TaskNode(pTaskQueue_t pQueue,pTaskNode_t *ppGet); //得到队头元素，同时出队


#endif
